package mx.collections;

extern class ArrayList extends flash.events.EventDispatcher, implements IList, implements flash.utils.IExternalizable, implements mx.core.IPropertyChangeNotifier {
	var length(default,null) : Int;
	var source : Array<Dynamic>;
	var uid : String;
	function new(?source : Array<Dynamic>) : Void;
	function addItem(item : Dynamic) : Void;
	function addItemAt(item : Dynamic, index : Int) : Void;
	function getItemAt(index : Int, ?prefetch : Int) : Dynamic;
	function getItemIndex(item : Dynamic) : Int;
	function itemUpdated(item : Dynamic, ?property : Dynamic, ?oldValue : Dynamic, ?newValue : Dynamic) : Void;
	function readExternal(input : flash.utils.IDataInput) : Void;
	function removeAll() : Void;
	function removeItem(item : Dynamic) : Bool;
	function removeItemAt(index : Int) : Dynamic;
	function setItemAt(item : Dynamic, index : Int) : Dynamic;
	function toArray() : Array<Dynamic>;
	function writeExternal(output : flash.utils.IDataOutput) : Void;
	private function itemUpdateHandler(event : mx.events.PropertyChangeEvent) : Void;
	private function startTrackUpdates(item : Dynamic) : Void;
	private function stopTrackUpdates(item : Dynamic) : Void;
}
